Previous Specifications
Originally, the very first member of the Kestrel-3 family would have supported my use-cases with the following features, as found on my Altera/TerasIC DE-1 development board:
- 512KiB RAM
- 640×480 display resolution with 16 colors out of 4096.
- Built-in SD card slot for bootstrapping, loading data, and saving data.
- PS/2 keyboard for user input.
- A 9-pin RS-232 port.
I wanted to target this board for the purposes of simplicity: it has everything I need to make a reference implementation of the computer. It also is quite affordable at US$150, at least until such time as they stop manufacturing it.
However, in having discussions with a number of people who were interested in following along with the Kestrel-3's development for themselves, tutorial-style, I've decided to not go this route (at least, not primarily). Instead, I'm now looking to use two or more iCE40HX8K-based FPGA boards in tandem to construct the first Kestrel-3 prototype. These boards are, in particular, icoBoard Gamma and MyStorm BlackIce boards. Both are targeted with the open-source toolchain, Yosys. Additionally, both icoBoard and BlackIce boards are free/open-source hardware projects. So this would be a great way of supporting their efforts as well.
This does mean it'll be more expensive to build; at a minimum, you'll need to purchase more adapters to get a working desktop computer. You'll want to contain everything inside a project box, as well.
Current Specifications
This design concept is not fully fleshed out, however; details to come as I resolve fundamental problems with this approach.
Right now I'm looking at using two open-source FPGA boards built around the open-source accessible Lattice iCE40HX4K or iCE40HX8K FPGAs. One board will consist of the CPU, at least 512KiB of local SRAM, and one serial port to facilitate bootstrapping the system. Another board will consist of the I/O hardware, at least 512KiB of I/O-accessible SRAM, and related ports and adapters.
My plan is to use the MyStorm BlackIce as the I/O board, because it has more usable PMOD ports. It should be able to handle a two-PMOD VGA adapter providing 4096 color output, two PS/2 adapters (one for keyboard, one for mouse), a PMOD for driving audio, and the two PMODs needed for the ByteLink interconnect. It also has an SD card slot that can be used as a "built-in" storage device.
This leaves the icoBoard Gamma to serve as the CPU board. Although this board has more I/O capacity, it's less accessible to the casual user. It does, however, expose four PMODs, two of which are conveniently usable for the ByteLink interconnect. This leaves two more PMODs free for use as high-speed serial interfaces for intelligent peripherals and/or debugging terminals.
The CPU Board
This would almost certainly be built on the icoBoard Gamma.
- KCP53010 processor running at 25MHz. This processor would be a port of the Kestrel-2DX's KCP53000 processor from Verilog and Shen into pure Verilog or Chisel-3 (not sure which yet), and equipped with a 64-bit TileLink TL-UL front-side bus. Along the way, it would fix a number of long-standing performance regressions found in the KCP53000.
- 1MiB SRAM (minimum).
- 16KiB ROM (minimum) to store a ported version of the Kestrel-2DX BIOS. It'll probably end up using closer to 64KiB to further house DX-Forth as well.
- 1+ SIA ports. This would implement a/an (a)synchronous serial connection to talk to the outside world via a terminal (uses one PMOD 1x6).
- External secondary storage to be provided by another microcontroller or host PC. I'll probably embrace and extend Commodore DOS, Atari 8-bit SIO commands, and/or Plan-9's 9P protocols for this purpose. I'll choose which to use when I get there.
- ByteLink Interconnect (4.5MB/s throughput to I/O board)
The I/O Board
This would almost certainly be built on the MyStorm BlackIce.
- ByteLink Interconnect (4.5MB/s throughput to CPU board)
- VGA Port
- PS/2 Port(s)
- Audio outputs
- 512KiB "I/O" SRAM (minimum)
Standard Disclaimers Apply.
Of course, I reserve the right to change my plans depending upon changes in general hardware availability.